package com.zw.admin.server.dao;

import com.zw.admin.server.commom.TkMapper;
import com.zw.admin.server.dto.strategy.AddStrategyDto;
import com.zw.admin.server.dto.strategy.AddStrategyVo;
import com.zw.admin.server.model.Device;
import com.zw.admin.server.model.StrategyDevice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import com.zw.admin.server.model.Strategy;
import java.util.List;
import java.util.Map;

@Mapper
@Repository
public interface StrategyDao extends TkMapper<Strategy> {

    /**
     * 查询所有有效策略
     * @return
     */
    @Select("select * from bsn_strategy where strategy_status = 1")
    List<Strategy> selectAll();

    /**
     * 策略主表新增数据
     * @param strategyDto
     * @return
     */
    int insertStrategy(AddStrategyDto strategyDto);

    /**
     * 策略设备子表新增数据
     * @param list
     */
    void insertStrategyDevice(List<StrategyDevice> list);

    /**
     * 获取未绑定设备列表,如果传入spaceId获取的是空间下未绑定的设备
     * @return
     */
    List<Device> getDeviceList(@Param("spaceId") Integer spaceId);

    /**
     * 查询策略列表
     * @return
     */
    List<AddStrategyVo> queryStrategyPage();

    /**
     * 删除策略的设备
     * @param strategyId
     */
    void deleteStrategyDevice(Integer strategyId);

    /**
     * 删除策略的设备
     * @param list
     */
    void deleteStrategyDeviceList(List<String> list);

    /**
     * 删除策略主表
     * @param strategyId
     */
    void deleteStrategy(Integer strategyId);

    /**
     * 策略id获取策略所属设备id
     * @param strategyId
     * @return
     */
    List<String> getStrategyDeviceId(Integer strategyId);


    /**
     * 更新策略
     * @param addStrategyDto
     */
    void updateStrategy(AddStrategyDto addStrategyDto);

    /**
     * 更新设备下发结果
     * @param strategyDevice
     */
    void updateDeviceState(StrategyDevice strategyDevice);


}
